//角色数据
const router = require('koa-router')()
const Role = require('../model/roleSchema.js')
const utils = require('../utils/utils.js')
//设置路由前缀
router.prefix('/roles')

//列表渲染 get 上传 POST 修改PUT或者POST 删除delete或者POST  RESTFUL风格语法
//如果是POST请求 获取前端发送的参数 ctx.request.body
//如果是GET请求 获取前端发送的参数 ctx.request.query
//ctx.body是返回给前端的数据
//方法的后面 第一个参数都是查询条件 第二个参数基本上都是返回条件
//{userPwd:0} 作为返回条件 0代表不返回  1代表返回 {}或者null代表全部返回 'userName userEmail'代表挑选返回
//$inc 自增加  $or或者  $in包含   $all所有




//角色列表查询渲染
router.get('/list', async (ctx) => {
    //解构出前端发送过来的数据
    let { roleName } = ctx.request.query
    //调用分页方法
    let { page, skipIndex } = utils.pager(ctx.request.query)
    try {
        let params = {};
        //如果前端发送了roleName则添加到params中; $regex代表模糊查询
        if (roleName) params.roleName = { $regex: roleName }
        // find方法查询所有数据      { _id: 1, rolePwd: 0 }为0则不返回给前端
        let query = Role.find(params)
        // skip跳过几条   limit限制返回条数
        let list = await query.skip(skipIndex).limit(page.pagesize).lean()
        // //处理时间格式
        list.forEach(item => {
            item.createTime = item.createTime.toLocaleString()
            item.updateTime = item.updateTime.toLocaleString()
        })
        // 查询总条数   countDocuments用于计算与选择标准匹配的文档总数量
        let total = await Role.countDocuments(params)
        console.log('total', total);
        ctx.body = utils.success({ list, total })

    } catch (error) {
        console.log(error);
    }
})
//角色列表创建/编辑
router.post('/operate', async (ctx) => {
    let params = ctx.request.body
    let { roleName, remark, active, _id } = params
    try {
        //判断是否创建
        if (active === 'create') {
            //验证角色名是否填写
            if (!roleName) {
                ctx.body = utils.fail('角色名不能为空')
                return
            }
            //判断角色名是否存在
            let res = await Role.findOne({ $or: [{ roleName }] }, 'roleName _id')
            if (res) {
                ctx.body = utils.fail('角色已存在')
                return
            } else {
                //创建角色
                let res = await Role.create(params)
                ctx.body = utils.success("创建成功")
            }
        } else {
            //编辑角色  findOneAndUpdate()查找并更新单个文档  第一个参数查找,第二个参数更新,第三个参数返回
            let res = await Role.findOneAndUpdate({ _id }, params)
            ctx.body = utils.success('更新成功')
        }
    } catch (error) {
        console.log(error);
    }
})
//角色权限设置
router.post('/setAuth', async (ctx) => {
    let { _id, ...params } = ctx.request.body
    try {
        //更新权限
        let res = await Role.findOneAndUpdate({ _id }, params)
        ctx.body = utils.success('更新成功')
    } catch (error) {
        console.log(error);
    }
})
//角色列表删除
router.post('/delete', async (ctx) => {
    //解构出前端发送过来的数据
    let _id = ctx.request.body
    try {
        //删除  findByIdAndDelete() 根据指定 ID 查找并删除文档   但不会删除child子元素 
        let res = await Role.findByIdAndDelete(_id)
        ctx.body = utils.success(`删除成功`)
    } catch (error) {
        console.log(error);
    }
})













router.get('/list1', async (ctx) => {
    try {
        ctx.body = utils.success(['A栋', 'B栋', 'C栋', 'D栋'])
    } catch (error) {
        console.log(error);
    }
})
router.get('/list2', async (ctx) => {
    try {
        ctx.body = utils.success(['1F', '2F', '3F', '4F', '5F', '6F', '7F', '8F', '9F', '10F'])
    } catch (error) {
        console.log(error);
    }
})
router.get('/list3', async (ctx) => {
    try {
        ctx.body = utils.success(['101', '102', '103', '104'])
    } catch (error) {
        console.log(error);
    }
})



module.exports = router
